﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Globalization;
using System.Collections.ObjectModel;

namespace Medianamik.Core.Security
{
    //public class GroupNode : SystemNode<GroupNode>, ISystemNode, INamedNode 
    //{

    //    #region Fields



    //    #endregion

    //    #region .ctors

    //    public GroupNode()
    //        : base()
    //    {

    //    }

    //    #endregion

    //    #region Properties

    //    public string Name
    //    {
    //        get
    //        {
    //            return DefaultInstance.Properties["Name"].GetValue<string>()
    //                ?? string.Empty;
    //        }
    //        set
    //        {
    //            DefaultInstance.Properties["Name"].SetValue(value);
    //        }
    //    }

    //    public override CultureInfo DefaultCulture
    //    {
    //        get
    //        {
    //            return CultureInfo.InvariantCulture;
    //        }
    //        set
    //        {

    //        }
    //    }

    //    public override Guid NamePropertyId
    //    {
    //        get
    //        {
    //            return MedianamikProperties.GroupName;
    //        }
    //    }

    //    public override Guid NodeTypeID
    //    {
    //        get
    //        {
    //            return SystemNodeTypeID;
    //        }
    //        internal set
    //        {
    //            ;
    //        }
    //    }

    //    public override Guid SystemNodeTypeID
    //    {
    //        get { return MedianamikTypes.MedianamikGroup; }

    //    }

    //    public IEnumerable<Guid> RoleIds
    //    {
    //        get
    //        {
    //            return ((ManyToManyNodeProperty)DefaultInstance.Properties["Roles"]).Values;
    //        }
    //        set
    //        {
    //            DefaultInstance.Properties["Roles"].SetValue(value);
    //        }
    //    }

    //    public IEnumerable<Guid> UserIds
    //    {
    //        get
    //        {
    //            return ((ManyToManyNodeProperty)DefaultInstance.Properties["Users"]).Values;
    //        }
    //        set
    //        {
    //            DefaultInstance.Properties["Users"].SetValue(value);
    //        }
    //    }

    //    #region Permissions

    //    #region Type

    //    private List<InheritedPermission> _inheritedTypePermission;
    //    public ReadOnlyCollection<InheritedPermission> InheritedTypePermissions
    //    {
    //        get
    //        {
    //            if (_inheritedTypePermission == null)
    //            {
    //                _inheritedTypePermission = .ToList();
    //            }
    //            return _inheritedTypePermission.AsReadOnly();
    //        }
    //    }

    //    private List<Permission> _typePermissions;
    //    public ReadOnlyCollection<Permission> TypePermissions
    //    {
    //        get
    //        {
    //            if (_typePermissions == null)
    //            {
    //                _typePermissions = SecurityManager.GetNodeTypePermissionsByGroupId(ID).ToList();
    //            }

    //            return _typePermissions.AsReadOnly();
    //        }
    //    }

    //    #endregion

    //    #region Node


    //    #endregion

    //    #endregion

    //    #endregion

    //    #region Methods

    //    public RoleNode[] GetRoles()
    //    {
    //        return NodeManager.GetNodes<RoleNode>(RoleIds.ToArray())
    //            .ToArray();
    //    }

    //    public UserNode[] GetUsers()
    //    {
    //        return NodeManager.GetNodes<UserNode>(UserIds.ToArray())
    //            .ToArray();
    //    }

    //    #endregion

    //}
}
